#ifndef PLANATHOMEALGORITHM_H_
#define PLANATHOMEALGORITHM_H_

#include "Request.h"
#include <list>
using namespace std;


class PlanAtHomeAlgorithm
{
	float* actual_coords;
	float* origin;
	float speed;
	float total_road;
	float actual_time;
	int dimensions;
	list<Request> requests;
	list<Request> requests_done;
	list<Request> calculate_offline(list<Request>::iterator begin, list<Request>::iterator end, float time_offset);
	float calculate_homing_distance(list<Request>::iterator begin, list<Request>::iterator end);
	void mark_requests_visited(list<Request>::iterator start, list<Request>::iterator end, float time_offset);
public:
	PlanAtHomeAlgorithm(list<Request> requests, int dimensions, float speed);
	virtual ~PlanAtHomeAlgorithm();
	list<Request> calculate();
};


#endif /*PLANATHOMEALGORITHM_H_*/
